#include "estructuras.h"
#include <stdlib.h>
#include <stdio.h>

extern void crear_arbol_huffman(nodo_lista_t **l, nodo_arbol_t **a);
extern void lista_insertar_ordenado(nodo_lista_t **l, nodo_lista_t *n);

// Este test dejo de funcionar cuando corregimos los free de la funcion crear_arbol_huffman.
// Suponemos que se debe a que reservamos memoria para los nodos en C y luego intentamos liberarlos en asembler.
// Posible solucion comentar los free de la funcion y cruzar los dedos.

int main(){
	nodo_arbol_t na1;
	nodo_arbol_t na2;
	nodo_arbol_t na3;
	nodo_arbol_t na4;
	
	nodo_lista_t nl1;
	nodo_lista_t nl2;
	nodo_lista_t nl3;
	nodo_lista_t nl4;
	
	setear_nodo_arbol_t(&na1,'a',10,1,0,0,0);
	setear_nodo_arbol_t(&na2,'b',20,1,0,0,0);
	setear_nodo_arbol_t(&na3,'c',30,1,0,0,0);
	setear_nodo_arbol_t(&na4,'d',40,1,0,0,0);
	
	setear_nodo_lista_t(&nl1,&na1,0);
	setear_nodo_lista_t(&nl2,&na2,0);
	setear_nodo_lista_t(&nl3,&na3,0);
	setear_nodo_lista_t(&nl4,&na4,0);
	
	nodo_lista_t *lista;
	lista = NULL;
	
	lista_insertar_ordenado(&lista,&nl1);
	lista_insertar_ordenado(&lista,&nl2);
	lista_insertar_ordenado(&lista,&nl3);
	lista_insertar_ordenado(&lista,&nl4);
	
	nodo_arbol_t *arbol;
	arbol = NULL;
	
	crear_arbol_huffman(&lista,&arbol);
	mostrar_arbol(arbol);
	
	return 0;
};
